package cn.iocoder.yudao.module.social.dal.dataobject.container;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

/**
 * 容器 DO
 *
 * @author 芋道源码
 */
@TableName("social_container")
@KeySequence("social_container_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContainerDO extends BaseDO {

    /**
     * 容器编号
     */
    @TableId
    private Long id;

    /**
     * 容器类型
     *
     * 枚举 {@link cn.iocoder.yudao.module.social.enums.ContainerTypeEnum}
     * 例如：board(版块)、category(栏目)、timeline(时间线)、blog(博客)等
     */
    private String type;

    /**
     * 容器名称
     */
    private String name;

    /**
     * 父容器编号
     *
     * 关联 Container 的 id 字段，支持多级结构
     * 为空表示顶级容器
     */
    private Long parentId;

    /**
     * 容器描述
     */
    private String description;

    /**
     * 排序
     *
     * 用于同级容器的排序显示
     */
    private Integer sort;

    /**
     * 容器权限
     *
     * 枚举 {@link cn.iocoder.yudao.module.social.enums.ContainerPermissionEnum}
     * 例如：public(公开)、private(私有)、restricted(受限)、readonly(只读)
     */
    private String permission;

    /**
     * 创建者用户ID
     *
     * 用于权限控制，标识容器的所有者
     */
    private Long creatorUserId;

}
